﻿Imports System.Collections.Generic
Imports System.ComponentModel
Imports MySql.Data.MySqlClient
Imports System.Drawing
Imports System.Text
Imports System.Windows.Forms

Public Class frmCadNotaAluno

    Private Sub frmCadNotaAluno_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
        ' TODO: esta linha de código carrega dados na tabela 'sCEDataSet.Alunos'. Você pode movê-la ou removê-la conforme necessário.
        Me.alunosTableAdapter.Fill(Me.ScE_ETEC_DataSet.alunos)
        txtPesquisa.CharacterCasing = CharacterCasing.Upper
    End Sub

    Private Sub cbFiltrar_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs) Handles cbFiltrar.SelectedIndexChanged
        If cbFiltrar.Text = "Código do Aluno" Then
            cbPesquisa.Visible = False
            cbPesquisa.Enabled = False
            txtPesquisa.Enabled = True
            txtPesquisa.Visible = True
        ElseIf cbFiltrar.Text = "Nome" Then
            cbPesquisa.Visible = False
            cbPesquisa.Enabled = False
            txtPesquisa.Enabled = True
            txtPesquisa.Visible = True
        ElseIf cbFiltrar.Text = "Série" Then
            cbPesquisa.Visible = True
            cbPesquisa.Enabled = True
            txtPesquisa.Enabled = False
            txtPesquisa.Visible = False
            cbPesquisa.Items.Clear()
            cbPesquisa.Items.Add("1º Ano do EF")
            cbPesquisa.Items.Add("2º Ano do EF")
            cbPesquisa.Items.Add("3º Ano do EF")
            cbPesquisa.Items.Add("4º Ano do EF")
            cbPesquisa.Items.Add("5º Ano do EF")
            cbPesquisa.Items.Add("6º Ano do EF")
            cbPesquisa.Items.Add("7º Ano do EF")
            cbPesquisa.Items.Add("8º Ano do EF")
            cbPesquisa.Items.Add("9º Ano do EF")
            cbPesquisa.Items.Add("1º Ano do EM")
            cbPesquisa.Items.Add("2º Ano do EM")
            cbPesquisa.Items.Add("3º Ano do EM")
            cbPesquisa.Items.Add("Tecnico em Informatica")
            cbPesquisa.Items.Add("Tecnico em Administracao")
        ElseIf cbFiltrar.Text = "Periodo" Then
            cbPesquisa.Visible = True
            cbPesquisa.Enabled = True
            txtPesquisa.Enabled = False
            txtPesquisa.Visible = False
            cbPesquisa.Items.Clear()
            cbPesquisa.Items.Add("Manha")
            cbPesquisa.Items.Add("Tarde")
            cbPesquisa.Items.Add("Noite")
            cbPesquisa.Items.Add("Integral")
        End If
    End Sub

    Private Sub btnPesquisar_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnPesquisar.Click
        If cbFiltrar.Text = "Código do Aluno" Then
            Consultar("SELECT cod_aluno, Nome, Curso, Periodo, Nota_1, Nota_2, Nota_3, Nota_4, Media_Nota FROM Alunos nolock WHERE cod_aluno ='" + txtPesquisa.Text & "'")
        ElseIf cbFiltrar.Text = "Nome" Then
            Consultar("SELECT cod_aluno, Nome, Curso, Periodo, Nota_1, Nota_2, Nota_3, Nota_4, Media_Nota FROM Alunos nolock WHERE Nome LIKE '%" + txtPesquisa.Text & "%'")
        ElseIf cbFiltrar.Text = "Série" Then
            Consultar("SELECT cod_aluno, Nome, Curso, Periodo, Nota_1, Nota_2, Nota_3, Nota_4, Media_Nota FROM Alunos nolock WHERE Serie ='" + cbPesquisa.Text & "'")
        ElseIf cbFiltrar.Text = "Periodo" Then
            Consultar("SELECT cod_aluno, Nome, Curso, Periodo, Nota_1, Nota_2, Nota_3, Nota_4, Media_Nota FROM Alunos nolock WHERE Periodo ='" + cbPesquisa.Text & "'")
        End If
    End Sub

    ' Limpar campos
    Private Sub LimparCampo()
        For Each c As Control In Controls
            If TypeOf c Is GroupBox Then
                For i As Integer = 0 To c.Controls.Count - 1
                    If TypeOf c.Controls(i) Is TextBox Then
                        TryCast(c.Controls(i), TextBox).Clear()
                    End If
                    If TypeOf c.Controls(i) Is ComboBox Then

                        TryCast(c.Controls(i), ComboBox).Text = ""
                    End If
                    If TypeOf c.Controls(i) Is NumericUpDown Then

                        TryCast(c.Controls(i), NumericUpDown).Value = 0
                    End If
                Next
            End If
        Next
    End Sub

    Private Sub dgvDadosAluno_CellDoubleClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgvDadosAluno.CellDoubleClick
        'Limpar a GroupBox
        LimparCampo()

        'O Campo codFuncionario recebe da datagrid tbCliente a celula número 0 e assim por diante
        'Try
        txtNome.Text = dgvDadosAluno.CurrentRow.Cells(1).Value.ToString()
        txtSerie.Text = dgvDadosAluno.CurrentRow.Cells(2).Value.ToString()
        txtPeriodo.Text = dgvDadosAluno.CurrentRow.Cells(3).Value.ToString()
        With dgvDadosAluno.CurrentRow
            MsgBox(.Cells(4).Value.ToString())
            cmbNota1.SelectedIndex = cmbNota1.FindString(.Cells(4).Value.ToString())
            cmbNota2.SelectedIndex = cmbNota2.FindString(.Cells(5).Value.ToString())
            cmbNota3.SelectedIndex = cmbNota3.FindString(.Cells(6).Value.ToString())
            cmbNota4.SelectedIndex = cmbNota4.FindString(.Cells(7).Value.ToString())
            cmbNotaMedia.SelectedIndex = cmbNotaMedia.FindString(.Cells(8).Value.ToString())
        End With
        'Catch
        'End Try
    End Sub

    Private Sub tsbNovo_Click(ByVal sender As Object, ByVal e As EventArgs) Handles tsbNovo.Click
        LimparCampo()
        Me.Width = 484
        Me.Height = 360
        dgvDadosAluno.Visible = False
    End Sub

    Private Sub tsbSalvar_Click(ByVal sender As Object, ByVal e As EventArgs) Handles tsbSalvar.Click
        Dim status As Integer = 0
        ' Try
        'dgvDadosAluno.CurrentRow.Cells(4).Value = nudNota1.Value
        'dgvDadosAluno.CurrentRow.Cells(5).Value = nudNota2.Value
        'dgvDadosAluno.CurrentRow.Cells(6).Value = nudNota3.Value
        'dgvDadosAluno.CurrentRow.Cells(7).Value = nudNota4.Value
        'dgvDadosAluno.CurrentRow.Cells(8).Value = (nudNota1.Value + nudNota2.Value + nudNota3.Value + nudNota4.Value) / 4
        'txtMedia.Text = dgvDadosAluno.CurrentRow.Cells(8).Value.ToString()
        Dim SCE As New MySqlConnection(My.MySettings.Default.SCE_ETEC_ConnectionString) 'Properties.Settings.[Default].SCE_ETEC_ConnectionString)
        'Try
        'SqlConnection SCE = new MySqlConnection(Properties.Settings.Default.SCE_ETEC_ConnectionString);
        Dim cmd As New MySqlCommand()
        SCE.Open()

        ' comando UPDATE tabela SET campo1='valor', campo2='valor' WHERE id='valor'
        Dim sqlCmd As String = "UPDATE Alunos SET Nota_1=@nota1, Nota_2=@nota2, Nota_3=@nota3, Nota_4=@nota4, Media_Nota=@media where cod_aluno=@codigo_aluno"
        cmd = New MySqlCommand(sqlCmd, SCE)

        cmd.Parameters.AddWithValue("@codigo_aluno", Convert.ToInt32(dgvDadosAluno.CurrentRow.Cells(0).Value.ToString()))
        cmd.Parameters.AddWithValue("@nota1", cmbNota1.SelectedItem.ToString())
        cmd.Parameters.AddWithValue("@nota2", cmbNota2.SelectedItem.ToString())
        cmd.Parameters.AddWithValue("@nota3", cmbNota3.SelectedItem.ToString())
        cmd.Parameters.AddWithValue("@nota4", cmbNota4.SelectedItem.ToString())
        cmd.Parameters.AddWithValue("@media", cmbNotaMedia.SelectedItem.ToString())

        cmd.ExecuteNonQuery()
        status = 1
        ' Catch erro As Exception
        '    MsgBox(erro.Message, vbOKOnly, "Erro")
        'Finally
        SCE.Close()
        If status = 1 Then
            MsgBox("Concluido.", vbOKOnly, "Aviso")
        End If
        ' End Try
        'Catch
        'End Try
    End Sub

    ' Conectando no BD
    Private Sub Consultar(ByVal comando_sql As String)
        Dim SCE As New MySqlConnection(My.MySettings.Default.SCE_ETEC_ConnectionString) 'Properties.Settings.[Default].SCE_ETEC_ConnectionString)
        'Data Source é Properties.Settings.Default.SCEConnectionString
        Dim cmd As New MySqlCommand()
        Me.Width = 558
        Me.Height = 525
        dgvDadosAluno.Visible = True
        Try
            'Define a instrução Sql
            Dim sql As String = comando_sql
            'Lê os dados da variavel sql e conectar no cn
            cmd = New MySqlCommand(sql, SCE)
            'Abre conexão
            SCE.Open()
            'Define o valor da CommandType para cmd
            cmd.CommandType = CommandType.Text
            'Representa um conjunto de comandos de dados e uma conexão de banco de dados
            '                     * que são usados para preencher o DataSet e atualizar um banco de dados SQL Server.

            Dim SCEAdapter As New MySqlDataAdapter(cmd)
            'Representa uma tabela de dados na memória.
            Dim aluno As New DataTable()
            ' Adiciona ou atualiza linhas em um DataTable para que correspondam na fonte de
            '                     * dados usando o DataTable.

            SCEAdapter.Fill(aluno)
            'A tbClienteDataGridView recebe o DataTable cliente

            'Fechar a conexão
            dgvDadosAluno.DataSource = aluno
        Catch ex As Exception
            MsgBox(ex.Message, vbOKOnly, "Erro")
        Finally
            SCE.Close()
        End Try
        
    End Sub
End Class